<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 建城游戏 {
        //     房子: {
        //         颜色 :
        //         房子类型: 
        //         干什么: function()
        //     },

        //     植物: {
        //         color : ,
        //         name : "",
        //         干什么: function()
        //     },

        //     道路: {
        //         宽窄: 50米
        //         材质: 沥青
        //         干什么: function(){}
        //     }
        // }

        // 面向对象 是一种设计模式【编程思想】  简称OOP
        // 将对象作为基本单元，将程序和数据封装其中。

        // 工厂模式 -> 流水线->批量生产  eg:布偶玩具
            // ->  即  函数
            // -> 解决了 创建 相似对象 的问题
            // -> 缺点: 无法识别 对象的来源
            function toy( name , year , price ){
                var obj = {
                    name : name ,
                    year : year , 
                    price :price
                }
                return obj
            }

            var pq = toy("佩奇" , "2024,10,1" , 99.9)
            var lpz = toy("蓝胖子" , "2024,10,21" , 1000)
            var txb = toy("草莓熊" , "2024,8,1" , 81)
            console.log(pq)
            

        // 构造函数模式 -> 函数名首字母大写【建议】
        //  -> this通信 将全部指向该实例  [new 关键字构建实例]
        //  -> 解决了 无法识别的问题
        function Toy(name , year){
            this.name = name
            this.year = year 
           
        }
        var txbb = new Toy( "天线宝宝" , "2020,10,1" )
        var cmx = new Toy("草莓熊" , "2024.10.1")
       

        // instanceof  检测某个实例是否来在某个构造函数
        console.log( txb instanceof toy )


        // 原型模式  -> 共享
        // 构造函数.prototype.方法
        Toy.prototype.fn1 = function(){
                console.log("陪伴孩子")
            }
        Toy.prototype.fn2 = function(){
                console.log("靠枕")
            }
            console.log(txbb)
        console.log(cmx)
        txbb.fn1()
        cmx.fn1()

        // 数组对象
        // function Array(){

        // }

        var arr1 = new Array(1,2,3)
        var arr2 = new Array("a","b","c")
        console.log(arr1)
        console.log(arr2)
    </script>
</body>
</html>